Skip to content

whir-svo#204

Open
TomWambsgans wants to merge 39 commits into
mainfrom
whir-split-eq
Open

whir-svo#204
TomWambsgans wants to merge 39 commits into
mainfrom
whir-split-eq

Conversation

@TomWambsgans

Copy link
Copy Markdown
Collaborator

No description provided.

@TomWambsgans TomWambsgans force-pushed the main branch 2 times, most recently from 4cc57d4 to 9b44b59 Compare April 25, 2026 09:11
@TomWambsgans TomWambsgans force-pushed the main branch 2 times, most recently from c6f9fd4 to c09c85a Compare April 26, 2026 21:43
TomWambsgans and others added 2 commits April 27, 2026 11:44
@TomWambsgans TomWambsgans mentioned this pull request May 1, 2026
TomWambsgans and others added 3 commits May 21, 2026 21:55
Adopt main's always-IV slice hashing (length absorbed into the IV for
domain separation) while keeping whir-split-eq's existing zero-skip
optimization at the DFT layer (commit_with_prefix_len /
reorder_and_dft_with_prefix_len). The Merkle layer keeps the simpler
merkle_commit(matrix, n_cols) API and hashes the full DFT matrix,
since the DFT already cut trailing zeros.

Concretely:
- precompute_zero_suffix_state + hash_rtl_iter_with_initial_state added
  to the sponge module (alongside the existing hash_iter).
- whir/src/merkle.rs first_digest_layer switched to RTL absorption
  seeded with [base_width, 0, ..., 0], via the new
  vertically_packed_row_rtl matrix helper (n_zero_chunks = 0).
- backend merkle_verify and fiat-shamir verifier swap hash_iter for
  hash_slice so the verifier reproduces the prover's IV-based digest.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@TomWambsgans TomWambsgans force-pushed the main branch 3 times, most recently from c5a3050 to 9dc5d68 Compare May 28, 2026 12:02
TomWambsgans and others added 6 commits June 4, 2026 16:19
Adapts main's 'Custom thread pool (#239)' (rayon -> parallel crate) to the
whir-split-eq refactor. This branch's SVO / LSB-first-fold WHIR prover supersedes
main's WHIR statement-combining: kept whir-split-eq's unpacked Vec<EF> weights,
compute_eval_eq_base_batched, LSB-cols FFT-prep layout, and svo.rs, dropping main's
superseded combine_statement / compute_eval_eq_base_packed_batched. Converted all of
whir-split-eq's rayon (svo.rs, open.rs) to the pool, and made build_accumulators
sequential across groups since the pool forbids the nested dispatch rayon allowed
(each group still parallelizes internally). Adapted lsb_fold to main's reworked
fold_multilinear_at_bit API.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reconcile main's arena-allocator migration (#247, "remove global_allocator
in zk-alloc") with the WHIR split-eq refactor on this branch.

Conflicts resolved:
- quotient_gkr/layers.rs: materialise_in_full keeps the branch's pub(super)
  visibility and adopts main's ArenaVec return type.
- whir/utils.rs: keep the split-eq LSB-cols FFT-prep layout but write into an
  ArenaVec via par_fill (main's allocator) instead of par_map_collect's Vec;
  drop the now-unused log2_strict_usize import.
- whir/open.rs: keep the branch's final_round / open_merkle_tree_at_challenges
  refactor and SVO sumcheck; drop main's combine_statement (deleted on this
  branch). Propagate main's ArenaVec migration through the new SVO helpers
  (SumcheckSingle.weights, lsb_fold, fold_by_tensor, build_post_svo_weights)
  to avoid Vec<->ArenaVec copies in the prover hot path.

Auto-merges verified coherent: eq_mle.rs composes the branch's
compute_eval_eq_base_batched rename/unpacked-output with main's ArenaVec
buffers; commit.rs changes are in disjoint methods.

cargo fmt / clippy clean; cargo testall (release) green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant